home *** CD-ROM | disk | FTP | other *** search
/ ADA Programming Guide / ADA Programming Guide.iso / ada_a9x / math.ada < prev    next >
Text File  |  1996-01-30  |  2KB  |  79 lines

  1. WITH ADA.Text_IO; USE ADA.Text_IO;
  2. WITH My_Int_IO, My_Flt_IO; USE My_Int_IO, My_Flt_IO;
  3.  
  4. PROCEDURE Test_Math IS -- Test built in math operations
  5.  
  6.     A , B , I : Integer;
  7.      X : Float :=  -123.4567;  --  digits 8      (see ARM 3.5.7)
  8.  
  9.     PROCEDURE Power_Float(P, U : IN Integer) IS
  10.     BEGIN
  11.         FOR I IN P .. U LOOP
  12.             Put("2 ** ");
  13.             Put(I,4);
  14.             Put(2.0 ** I,4,8,400);
  15.             New_Line;
  16.         END LOOP;
  17.     EXCEPTION
  18.         WHEN Numeric_Error =>
  19.             Put_Line(" ************ Overflow *************");
  20.     END Power_Float;
  21.     PROCEDURE Power_Int IS
  22.     BEGIN
  23.         FOR I IN 0 .. 20 LOOP
  24.             Put("    2 ** ");
  25.             Put(I, WIDTH => 4);
  26.             Put(2 ** I);
  27.             IF ((I + 1) MOD 3) = 0 THEN
  28.                 New_Line;
  29.             END IF;
  30.         END LOOP;
  31.     EXCEPTION
  32.         WHEN Numeric_Error =>
  33.             Put_Line(" ************ Overflow *************");
  34.     END Power_Int;
  35. BEGIN
  36.     Put_Line("***** ARM 4.5.5. Multiplying Operators: REM and MOD *****");
  37.          Put     ("   A    B  REM  MOD    A    B  REM  MOD");
  38.     Put_Line("    A    B  REM  MOD    A    B  REM  MOD");
  39.     FOR A IN 10 .. 14 LOOP
  40.         B := 5;
  41.         Put(A,4);
  42.         Put(B,5);
  43.         Put((A REM B),5);
  44.         Put((A MOD B),5);
  45.         Put(-A,5);
  46.         Put(B,5);
  47.         Put(((-A) REM B),5);
  48.         Put(((-A) MOD B),5);
  49.         B := -5;
  50.         Put(A,5);
  51.         Put(B,5);
  52.         Put((A REM B),5);
  53.         Put((A MOD B),5);
  54.         B := -5;
  55.         Put(-A,5);
  56.         Put(B,5);
  57.         Put(((-A) REM B),5);
  58.         Put(((-A) MOD B),5);
  59.         New_Line;
  60.     END LOOP;
  61.     New_Line(2);
  62.     Put_Line("***** Float formating (14.3.9) and POW (ARM 4.4) *****");
  63.     Put(X); -- default format             
  64.     Put("=[-1.2345670e+02]");
  65.     New_Line;
  66.     Put(X, Fore => 5, Aft => 3, Exp => 2);    
  67.     Put("=[bbb-1.235e+2]");
  68.     New_Line;
  69.     Put(X, 5, 3, 0);                          
  70.     Put("=[b-123.457]");
  71.     New_Line;
  72.     Power_Float(7,10);
  73.     Power_Float(60,65);
  74.     Power_Float(300,305);
  75.     Power_Float(1020,1026);
  76.     New_Line(2);
  77.     Put_Line("***** Integer formating (ARM 14.3.8) and POW (ARM 4.4) *****");
  78.     Power_Int;
  79. END Test_Math;